/*
 *  procesador_layers.h
 *  Wilson
 *
 *  Created by Sebastian Orfino on 11/18/11.
 *  Copyright 2011 lbs3. All rights reserved.
 *
 */

#ifndef __PROCESADORLAYERS__
#define __PROCESADORLAYERS__

class IControlView;
class ISpread;

namespace wilson {

	/** Es el layer donde se colocan las notas de wilson. El layer no es visible en su paleta y no es imprimible.
	 Solo se puede mostrar u ocultar desde la paleta de wilson */
	class mi_layer {

		//IDocument * doc;
		//IDocumentLayer * mi_layer_;
		
		UIDRef docRef;
		UIDRef layerRef;
		UIDRef spreadRef;
		
		
	public:
		
		//NOTA: fijarse que mi_layer siempre crea WILSON_NOT_PRINTABLE cuando se lo instancia sobre un spread, por mas que ese 
		//spread no tenga notas pegadas. Esto igual es inofensivo.
		/** Crea la capa WILSON_NOT_PRINTABLE en el spread indicado */
		mi_layer(ISpread * d);
		
		/** Crea la capa WILSON_NOT_PRINTABLE en el spread indicado */
		mi_layer(UIDRef _r);
		virtual ~mi_layer();	
		
		void ocultar();
		void mostrar();
		
		/** Coloca el pageitem en el spread */
		void colocar(UIDRef item);

		/** Pone el spread como activo */
		void activar(IControlView*);
		
		/** Te devuelve el layer de wilson para el spread que se le paso en el ctor */
		UIDRef content_layer() const;
		
		/** pone la capa de wilson sobre las demas */
		void mover_arriba();
		
	private:
		
		void crear_si_no_existe();
		void esVisible(bool b);
		void init(UIDRef s) throw();
		const PMString WILSON_NOT_PRINTABLE;
	};
}
#endif//__PROCESADORLAYERS__